/*
 * @Date: 2024-01-03 11:01:34
 * @LastEditors: lyx
 * @LastEditTime: 2024-01-03 13:57:50
 * @FilePath: \mt-middleware-server\src\ws\ws.client.ts
 * @Description:
 */
// import { Injectable } from '@nestjs/common';
// import { Socket } from 'socket.io-client';
// import { Observable, of, throwError } from 'rxjs';
// import { catchError, map, retry, take, takeLast } from 'rxjs/operators';

// @Injectable()
// export class WebSocketClient {
//   private socket: Socket;
//   private readonly socketUrl = 'http://localhost:8080/echo'; // 替换为你的 Java WebSocket 服务器的地址和端口号

//   private readonly socketUrlObj = {
//     protocol: 'ws://', // 或者 'wss://' 如果需要加密连接
//     host: 'localhost', // 你的WebSocket服务器地址
//     port: 8080 // 你的WebSocket服务器端口
//   };
//   constructor() {
//     // this.socket = new Socket(this.socketUrl, {});
//     this.socket = new Socket(this.socketUrlObj, {});
//   }

//   public connect(): Observable<string> {
//     if (!this.socket) {
//       throw new Error('WebSocket is not initialized.');
//     }

//     return this.socket.connect().pipe(
//       catchError((error: any) => {
//         console.error('WebSocket connection error:', error);
//         return throwError('WebSocket connection failed'); // 使用 throwError 返回错误，这样调用者可以处理这个错误
//       }),
//       retry(3), // 重试3次
//       takeLast(1), // 改为 takeLast(1) 以确保取得最后一次（可能是重试后的）结果
//       map((data: any) => data.msg), // 映射为接收到的消息字符串
//     );
//   }
// }
